const schema = {
  type: "object",
  properties: {
    author: {
      type: "string",
    },
    email: {
      type: "string",
    },
  },
};

// 异步
const childProcess = require("child_process");
const exec = (command, cb) => {
  childProcess.exec(command, (error, stdout) => {
    cb && cb(error, stdout);
  });
};

module.exports = function (content) {
  // 校验
  const options = this.getOptions(schema) || {};
  const { author = "null", email = "null" } = options;
  const resourcePath = this.resourcePath;
  const callback = this.async();
  const newContent = `
        /**
         * @Author:${author}
         * @Email:${email}
         * */
        
        ${content}
    `;
  const command = `npx eslint ${resourcePath}`;
  exec(command, (error, stdout) => {
    if (error) {
      console.log(stdout);
    }
    callback(null, newContent);
  });

  // 直接return 是同步的
  //   return newContent;
  //   setTimeout(() => {
  //     callback(null, JSON.stringify(newContent), null, {});
  //     console.log("net done");
  //   }, 1000);
};

// 异步 this.asyc 有四个参数 分别是
// error ：错误信息，如果存在的话则会抛出异常，构建终止
// content ：处理后的内容
// map ： sourceMap 相关信息
// meta ：要传给下一个 loader 的额外信息参数
// callback(null, JSON.stringify(newContent), null, {})
